﻿/*
Copyright (c) 2012 Maksim Gordeev

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/

/*
 * Сделано в SharpDevelop.
 * Пользователь: max
 * Дата: 05.05.2012
 * Время: 17:40
 * 
 * Для изменения этого шаблона используйте Сервис | Настройка | Кодирование | Правка стандартных заголовков.
 */
 
using System;

namespace jellybird.core
{
	/// <summary>
	/// Misc literals
	/// </summary>
	public static class Constants
	{	
		/// <summary>
		/// mini
		/// </summary>
		public const string MINI="mini";
		/// <summary>
		/// bigger
		/// </summary>
		public const string BIGGER="bigger";
		/// <summary>
		/// normal
		/// </summary>
		public const string NORMAL="normal";
		/// <summary>
		/// OAuth
		/// </summary>
		public const string OAUTH_ID="OAuth";
		public const char SPACE=' ';
		
		/// <summary>
		/// lookup.json
		/// </summary>
		public const string LOOKUP="lookup.json";
		/// <summary>
		/// ,
		/// </summary>
		public const char IDS_DELIMITER=',';
		/// <summary>
		/// oauth_consumer_key
		/// </summary>
		public const string OAUTH_CONSUMER_KEY="oauth_consumer_key";
		/// <summary>
		/// realm
		/// </summary>
		public const string REALM_KEY="realm";
		/// <summary>
		/// oauth_signature
		/// </summary>
		public const string OAUTH_SIGANTURE_KEY="oauth_signature";
		/// <summary>
		/// '='
		/// </summary>
		public const char OAUTH_KEY_VALUE_DELIMITER='=';
		/// <summary>
		/// ','
		/// </summary>
		public const char OAUTH_KEY_DELIMITER=',';
		/// <summary>
		/// '"'
		/// </summary>
		public const char OAUTH_QUOTE='"';
		/// <summary>
		/// '&'
		/// </summary>
		public const char URLENCODE_PARAM_DELIMITER='&';
		/// <summary>
		/// '='
		/// </summary>
		public const char URLENCODE_KEYVALUE_DELIMITER='=';
		/// <summary>
		/// '?'
		/// </summary>
		public const char URLENCODE_QUESTION_MARK='?';
		/// <summary>
		/// oauth_nonce
		/// </summary>
		public const string OAUTH_NONCE_KEY="oauth_nonce";
		/// <summary>
		/// Authorization
		/// </summary>
		public const string AUTHORIZATION_HEADER_KEY="Authorization";
		/// <summary>
		/// application/x-www-form-urlencoded
		/// </summary>
		public const string X_WWW_FORM_URLENCODED_TYPE=@"application/x-www-form-urlencoded";
		/// <summary>
		/// HMAC-SHA1
		/// </summary>
		public const string OAUTH_SIGNATURE_METHOD_HMACSHA1="HMAC-SHA1";
		/// <summary>
		/// RSA-SHA1
		/// </summary>
		public const string OAUTH_SIGNATURE_METHOD_RSASHA1="RSA-SHA1";
		/// <summary>
		/// PLAINTEXT
		/// </summary>
		public const string OAUTH_SIGNATURE_METHOD_PLAINTEXT="PLAINTEXT";
		/// <summary>
		/// oauth_signature_method
		/// </summary>
		public const string OAUTH_SIGNATURE_METHOD_KEY="oauth_signature_method";
		/// <summary>
		/// oauth_timestamp
		/// </summary>
		public const string OAUTH_TIMESTAMP_KEY="oauth_timestamp";
		/// <summary>
		/// oauth_token
		/// </summary>
		public const string OAUTH_TOKEN_KEY="oauth_token";
		/// <summary>
		/// oauth_version
		/// </summary>
		public const string OAUTH_VERSION_KEY="oauth_version";
		/// <summary>
		/// 1.0
		/// </summary>
		public const string OAUTH_VERSION_VALUE="1.0";
		/// <summary>
		/// */*
		/// </summary>
		public const string HEADER_ACCEPT_VALUE=@"*/*";
		/// <summary>
		/// jellybird
		/// </summary>
		public const string HEADER_USERAGENT_VALUE="jellybird";
		/// <summary>
		/// https://api.twitter.com
		/// </summary>
		public const string API_TWITTER_COM=@"https://api.twitter.com";
		/// <summary>
		/// POST
		/// </summary>
		public const string HTTP_METHOD_POST="POST";
		/// <summary>
		/// oauth_callback
		/// </summary>
		public const string OAUTH_CALLBACK_KEY="oauth_callback";
		/// <summary>
		/// include_entities
		/// </summary>
		public const string INCLUDE_ENTITIES="include_entities";
		/// <summary>
		/// skip_status
		/// </summary>
		public const string SKIP_STATUS="skip_status";
		/// <summary>
		/// true
		/// </summary>
		public const string TRUE_STRING="true";
		/// <summary>
		/// false
		/// </summary>
		public const string FALSE_STRING="false";
		/// <summary>
		/// json
		/// </summary>
		public const string JSON="json";
		/// <summary>
		/// GET
		/// </summary>
		public const string GET="GET";
		/// <summary>
		/// POST
		/// </summary>
		public const string POST="POST";
		/// <summary>
		/// account
		/// </summary>
		public const string ACCOUNT="account";
		/// <summary>
		/// verify_credentials
		/// </summary>
		public const string VERIFY_CREDENTIALS="verify_credentials.json";
		/// <summary>
		/// 1
		/// </summary>
		public const string API_VERSION_1="1";
		/// <summary>
		/// 1.1
		/// </summary>
		public const string API_VERSION_1_1="1.1";
		/// <summary>
		/// rate_limit_status
		/// </summary>
		public const string RATE_LIMIT_STATUS="rate_limit_status.json";
		/// <summary>
		/// end_session
		/// </summary>
		public const string END_SESSION="end_session.json";
		/// <summary>
		/// name
		/// </summary>
		public const string NAME="name";
		/// <summary>
		/// url
		/// </summary>
		public const string URL="url";
		/// <summary>
		/// location
		/// </summary>
		public const string LOCATION="location";
		/// <summary>
		/// description
		/// </summary>
		public const string DESCRIPTION="description";
		/// <summary>
		/// update_profile
		/// </summary>
		public const string UPDATE_PROFILE="update_profile.json";
		/// <summary>
		/// multipart/form-data
		/// </summary>
		public const string MULTIPART_FORM_DATA=@"multipart/form-data";
		/// <summary>
		/// image
		/// </summary>
		public const string IMAGE="image";
		/// <summary>
		/// tile
		/// </summary>
		public const string TILE="tile";
		/// <summary>
		/// use
		/// </summary>
		public const string USE="use";
		/// <summary>
		/// update_profile_background_image
		/// </summary>
		public const string UPDATE_PROFILE_BACKGROUND_IMAGE="update_profile_background_image";
		/// <summary>
		/// profile_background_color
		/// </summary>
		public const string PROFILE_BACKGROUND_COLOR="profile_background_color";
		/// <summary>
		/// profile_link_color
		/// </summary>
		public const string PROFILE_LINK_COLOR="profile_link_color";
		/// <summary>
		/// profile_sidebar_border_color
		/// </summary>
		public const string PROFILE_SIDEBAR_BORDER_COLOR="profile_sidebar_border_color";
		/// <summary>
		/// profile_sidebar_fill_color
		/// </summary>
		public const string PROFILE_SIDEBAR_FILL_COLOR="profile_sidebar_fill_color";
		/// <summary>
		/// rofile_text_color
		/// </summary>
		public const string PROFILE_TEXT_COLOR="profile_text_color";
		/// <summary>
		/// update_profile_colors
		/// </summary>
		public const string UPDATE_PROFILE_COLORS="update_profile_colors";
		/// <summary>
		/// update_profile_image
		/// </summary>
		public const string UPDATE_PROFILE_IMAGE="update_profile_image.json";
		/// <summary>
		/// friends
		/// </summary>
		public const string FRIENDS="friends";
		/// <summary>
		/// updates
		/// </summary>
		public const string UPDATES="updates";
		/// <summary>
		/// followers
		/// </summary>
		public const string FOLLOWERS="followers";
		/// <summary>
		/// favorites
		/// </summary>
		public const string FAVORITES="favorites";
		/// <summary>
		/// totals
		/// </summary>
		public const string TOTALS="totals.json";
		/// <summary>
		/// end_time
		/// </summary>
		public const string END_TIME="end_time";
		/// <summary>
		/// enabled
		/// </summary>
		public const string ENABLED="enabled";
		/// <summary>
		/// start_time
		/// </summary>
		public const string START_TIME="start_time";
		/// <summary>
		/// sleep_time
		/// </summary>
		public const string SLEEP_TIME="sleep_time";
		/// <summary>
		/// woeid
		/// </summary>
		public const string WOEID="woeid";
		/// <summary>
		/// code
		/// </summary>
		public const string CODE="code";
		/// <summary>
		/// placeType
		/// </summary>
		public const string PLACE_TYPE="placeType";
		/// <summary>
		/// country
		/// </summary>
		public const string COUNTRY="country";
		/// <summary>
		/// countryCode
		/// </summary>
		public const string COUNTRY_CODE="countryCode";
		/// <summary>
		/// trend_location
		/// </summary>
		public const string TREND_LOCATION="trend_location";
		/// <summary>
		/// language
		/// </summary>
		public const string LANGUAGE="language";
		/// <summary>
		/// always_use_https
		/// </summary>
		public const string ALWAYS_USE_HTTPS="always_use_https";
		/// <summary>
		/// discoverable_by_email
		/// </summary>
		public const string DISCOVERABLE_BY_EMAIL="discoverable_by_email";
		/// <summary>
		/// tzinfo_name
		/// </summary>
		public const string TZINFO_NAME="tzinfo_name";
		/// <summary>
		/// utc_offset
		/// </summary>
		public const string UTC_OFFSET="utc_offset";
		/// <summary>
		/// time_zone
		/// </summary>
		public const string TIME_ZONE="time_zone";
		/// <summary>
		/// geo_enabled
		/// </summary>
		public const string GEO_ENABLED="geo_enabled";
		/// <summary>
		/// settings
		/// </summary>
		public const string SETTINGS="settings.json";
		/// <summary>
		/// Content-Transfer-Encoding
		/// </summary>
		public const string CONTENT_TRANSFER_ENCODING="Content-Transfer-Encoding";
		/// <summary>
		/// binary
		/// </summary>
		public const string BINARY="binary";
		/// <summary>
		/// Content-ID
		/// </summary>
		public const string CONTENT_ID="Content-ID";
		/// <summary>
		/// Content-Disposition
		/// </summary>
		public const string CONTENT_DISPOSITION="Content-Disposition";
		/// <summary>
		/// form-data
		/// </summary>
		public const string FORM_DATA="form-data";
		/// <summary>
		/// filename
		/// </summary>
		public const string FILENAME="filename";
		/// <summary>
		/// 8bit
		/// </summary>
		public const string BIT8="8bit";
		/// <summary>
		/// count
		/// </summary>
		public const string COUNT="count";
		/// <summary>
		/// since_id
		/// </summary>
		public const string SINCE_ID="since_id";
		/// <summary>
		/// max_id
		/// </summary>
		public const string MAX_ID="max_id";
		/// <summary>
		/// page
		/// </summary>
		public const string PAGE="page";
		/// <summary>
		/// trim_user
		/// </summary>
		public const string TRIM_USER="trim_user";
		/// <summary>
		/// include_rts
		/// </summary>
		public const string INCLUDE_RTS="include_rts";
		/// <summary>
		/// exclude_replies
		/// </summary>
		public const string EXCLUDE_REPLIES="exclude_replies";
		/// <summary>
		/// contributor_details
		/// </summary>
		public const string CONTRIBUTORS_DETAILS="contributor_details";
		/// <summary>
		/// statuses
		/// </summary>
		public const string STATUSES="statuses";
		/// <summary>
		/// home_timeline
		/// </summary>
		public const string HOME_TIMELINE="home_timeline.json";
		/// <summary>
		/// users
		/// </summary>
		public const string USERS="users";
		/// <summary>
		/// profile_image
		/// </summary>
		public const string PROFILE_IMAGE="profile_image.json";
		/// <summary>
		/// screen_name
		/// </summary>
		public const string SCREEN_NAME="screen_name";
		/// <summary>
		/// size
		/// </summary>
		public const string SIZE="size";
		/// <summary>
		/// show
		/// </summary>
		public const string SHOW="show.json";
		/// <summary>
		/// user_id
		/// </summary>
		public const string USER_ID="user_id";
		/// <summary>
		/// mentions
		/// </summary>
		public const string MENTIONS="mentions.json";
        /// <summary>
        /// mentions_timeline (для 1.1)
        /// </summary>
        public const string MENTIONS_TIMELINE = "mentions_timeline.json";
		/// <summary>
		/// retweeted_by_me
		/// </summary>
		public const string RETWEETED_BY_ME="retweeted_by_me.json";
		/// <summary>
		/// retweeted_to_me
		/// </summary>
		public const string RETWEETED_TO_ME="retweeted_to_me.json";
		/// <summary>
		/// retweets_of_me
		/// </summary>
		public const string RETWEETS_OF_ME="retweets_of_me.json";
		/// <summary>
		/// user_timeline
		/// </summary>
		public const string USER_TIMELINE="user_timeline.json";
		/// <summary>
		/// retweeted_to_user
		/// </summary>
		public const string RETWEETED_TO_USER="retweeted_to_user.json";
		/// <summary>
		/// retweeted_by_user
		/// </summary>
		public const string RETWEETED_BY_USER="retweeted_by_user.json";
		public const int SIZE_MINI=24;
		public const int SIZE_NORMAL=48;
		public const int SIZE_BIGGER=73;
		
		public readonly static string[] Months=new string[]
		{
			"January",
			"February",
			"March",
			"April",
			"May",
			"June",
			"July",
			"August",
			"September",
			"October",
			"November",
			"December"			
		};
		
		public readonly static string UnreservedChars=
			"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
		
		
	}
	
	/// <summary>
	/// Known geo place attributes
	/// </summary>
	public static class PlaceAttributesKnown
	{
		/*
		 * https://dev.twitter.com/docs/about-geo-place-attributes
		 */
		
		public static readonly string StreetAddress="street_address";
		/// <summary>
		/// the city the place is in
		/// </summary>
		public static readonly string Locality="locality";
		/// <summary>
		/// the administrative region the place is in
		/// </summary>
		public static readonly string Region="region";
		/// <summary>
		/// the country code
		/// </summary>
		public static readonly string Iso3="iso3";
		/// <summary>
		/// in the preferred local format for the place
		/// </summary>
		public static readonly string PostalCode="postal_code";
		/// <summary>
		/// in the preferred local format for the place, include long distance code
		/// </summary>
		public static readonly string Phone="phone";
		/// <summary>
		/// twitter screen-name, without @
		/// </summary>
		public static readonly string Twitter="twitter";
		/// <summary>
		/// official/canonical URL for place
		/// </summary>
		public static readonly string Url="url";
//		public static readonly string AppId="app:id";
		
		
		
	}
	
	/// <summary>
	/// profile image sizes
	/// </summary>
	public enum TwImageSize
	{
		/// <summary>
		/// 73px by 73px
		/// </summary>
		bigger = 2,
		/// <summary>
		/// 48px by 48px
		/// </summary>
		normal = 1,
		/// <summary>
		/// 24px by 24px
		/// </summary>
		mini = 0,
		/// <summary>
		/// This will be the size the image was originally uploaded in.
		///	The filesize of original images can be very big so use this
		///	parameter with caution.
		/// </summary>
		original = 3,
		
		invalid = -1
	}
}
